package jssia.database.mysql.databases.information_schema;

import jssia.database.ColumnInfo;
import jssia.database.TableInfo;
import jssia.database.mysql.columns.LongTextColumn;
import jssia.database.mysql.columns.UnsignedBigIntColumn;
import jssia.database.mysql.columns.VarCharColumn;

@TableInfo ()
public class Columns {

    private Columns() {
    }

    public final static String TO_STRING = "information_schema.columns";

    public final static VarCharColumn TABLE_CATALOG = new VarCharColumn(512);

    @ColumnInfo(nullable = false)
    public final static VarCharColumn TABLE_SCHEMA = new VarCharColumn(64);

    @ColumnInfo(nullable = false)
    public final static VarCharColumn TABLE_NAME = new VarCharColumn(64);

    @ColumnInfo(nullable = false)
    public final static VarCharColumn COLUMN_NAME = new VarCharColumn(64);

    @ColumnInfo(nullable = false)
    public final static UnsignedBigIntColumn ORDINAL_POSITION = new UnsignedBigIntColumn();

    public final static LongTextColumn COLUMN_DEFAULT = new LongTextColumn();

    @ColumnInfo(nullable = false)
    public final static VarCharColumn IS_NULLABLE = new VarCharColumn(3);

    @ColumnInfo(nullable = false)
    public final static VarCharColumn DATA_TYPE = new VarCharColumn(64);

    public final static UnsignedBigIntColumn CHARACTER_MAXIMUM_LENGTH = new UnsignedBigIntColumn();

    public final static UnsignedBigIntColumn CHARACTER_OCTET_LENGTH = new UnsignedBigIntColumn();

    public final static UnsignedBigIntColumn NUMERIC_PRECISION = new UnsignedBigIntColumn();

    public final static UnsignedBigIntColumn NUMERIC_SCALE = new UnsignedBigIntColumn();

    public final static VarCharColumn CHARACTER_SET_NAME = new VarCharColumn(32);

    public final static VarCharColumn COLLATION_NAME = new VarCharColumn(32);

    @ColumnInfo(nullable = false)
    public final static LongTextColumn COLUMN_TYPE = new LongTextColumn();

    @ColumnInfo(nullable = false)
    public final static VarCharColumn COLUMN_KEY = new VarCharColumn(3);

    @ColumnInfo(nullable = false)
    public final static VarCharColumn EXTRA = new VarCharColumn(27);

    @ColumnInfo(nullable = false)
    public final static VarCharColumn PRIVILEGES = new VarCharColumn(80);

    @ColumnInfo(nullable = false)
    public final static VarCharColumn COLUMN_COMMENT = new VarCharColumn(255);

}
